﻿using BW.MesProject.Public.ErrorCode;
using BW.MesProject.WareHouse.Domain;
using BW.MesProject.WareHouse.Infrastructure.Dto.Input;
using BW.MesProject.WareHouse.Infrastructure.Dto.OutPut;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BW.MesProject.WareHouse.Infrastructure
{
    public interface IProcessServices
    {

        /// <summary>
        /// 查询工序管理列表
        /// </summary>
        /// <param name="input">查询参数</param>
        /// <returns>工序管理列表</returns>
        ApiResult<List<ProcessOut>> GetProcessList(QryInput input);

        /// <summary>
        /// 获取工序管理详情
        /// </summary>
        /// <param name="processId">工序管理ID</param>
        /// <returns>工序管理详情</returns>
        ApiResult<ProcessOut> GetProcessDetail(string processId);

        /// <summary>
        /// 获取工序管理明显情
        /// </summary>
        /// <param name="PRId"></param>
        /// <returns></returns>
        ApiResult<List<ProcessItemOut>> GetProcessItemList(string PRId);
        /// <summary>
        /// 获取工序管理文件
        /// </summary>
        /// <param name="PRId"></param>
        /// <returns></returns>
        ApiResult<List<ProcessFileOut>> GetProcessFileList(string PRId);

        /// <summary>
        /// 修改工序管理信息
        /// </summary>
        /// <param name="Process">工序管理基本信息</param>
        /// <param name="ProcessFile">工序管理文件信息</param>
        /// <param name="ProcessItem">工序管理顺序信息</param>
        /// <returns>修改结果</returns>
        /// <returns></returns>
        Task<ApiResult<bool>> UpdateProcess(ProcessModel Process, List<ProcessFileModel> ProcessFile, List<ProcessItemModel> ProcessItem);

        /// <summary>
        /// 删除工序管理信息
        /// </summary>
        /// <param name="processId">工序管理ID</param>
        /// <returns>删除结果</returns>
        ApiResult<bool> DeleteProcess(string processId);
        /// <summary>
        /// 添加
        /// </summary>
        /// <param name="Process"></param>
        /// <param name="ProcessFile"></param>
        /// <param name="ProcessItem"></param>
        /// <returns></returns>
         Task<ApiResult<int>> AddProcessNew(ProcessModel Process, List<ProcessFileModel> ProcessFile, List<ProcessItemModel> ProcessItem);

        ApiResult<int> GetCode(string Id, string name);
    }
}
